﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Data.SqlClient;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Popup;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraEditors.Repository;
using CrystalDecisions.Shared;
using CrystalDecisions.ReportSource;
using CrystalDecisions.CrystalReports.Engine;

namespace INHOADON_TAMVAN
{
    public partial class FrmBaoCaoHoaDonTheoNgay : DevExpress.XtraEditors.XtraForm
    {
        // LinQ database
        DataClasses1DataContext dc;

        // LinQ business object
        IEnumerable nhanVien;

        // LinQ business object
        IEnumerable khoBai;

        // Thao tác của người dùng đã được lưu/chưa được lưu
        Boolean saved;

        DialogResult result;

        // Khóa chính bảng kho bãi
        Int32 khoBaiID;

        // Tên kho
        String tenKho;

        // Khóa chính bảng Nhan_Vien dùng để truyền vào stored procedures
        Int32 nhanVienID;

        // Tên nhân viên
        String tenNhanVienThuPhi;

        // Tên giám đốc
        String tenGiamDoc;

        // Tên kế toán
        String tenKeToan;

        // Người lập bảng
        String nguoiLapBang;

        // Từ ngày 

        // Từ tháng
        Int32 tuThang;

        // Đến tháng
        Int32 denThang;

        // Từ năm
        Int32 tuNam;

        // Đến năm
        Int32 denNam;

        // Cần thơ ngày tháng năm
        String canThoNgayThangNam;

        DataTable dataTableObj = new DataTable();

        public FrmBaoCaoHoaDonTheoNgay()
        {
            dc = new DataClasses1DataContext(SystemInfo.pub_ConnString);

            InitializeComponent();
        }

        // Load form
        private void FormBaoCaoKhachHang_Load(object sender, EventArgs e)
        {
            DateTime dt = DateTime.Now;
            dateDenNgay.EditValue = dt;
            dateTuNgay.EditValue = dt.AddDays(-30);
        }


        private void barDong_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Close();
        }

        private void btnXemBaoCao_Click(object sender, EventArgs e)
        {
            hienThiBaoCaoTongHopHoaDonTheoNgay();
        }

        private void hienThiBaoCaoTongHopHoaDonTheoNgay()
        {
            Cursor.Current = Cursors.WaitCursor;

            if (dateTuNgay.EditValue != null && dateDenNgay.EditValue != null)
            {
                dxErrorProvider1.ClearErrors();

                dxErrorProvider2.ClearErrors();

                   // Từ tháng 
                    tuThang = Convert.ToInt32(dateTuNgay.DateTime.Month);

                    // Đến tháng
                    denThang = Convert.ToInt32(dateDenNgay.DateTime.Month);

                    // Từ năm
                    tuNam = Convert.ToInt32(dateTuNgay.DateTime.Year);

                    // Đến năm
                    denNam = Convert.ToInt32(dateDenNgay.DateTime.Year);

                    DateTime dt = DateTime.Now;

                    canThoNgayThangNam = "Cần Thơ, ngày " + dt.Day + " tháng " + dt.Month + " năm " + dt.Year;

                // Connection
                SqlConnection myConnection = new SqlConnection(SystemInfo.pub_ConnString);

                    try
                    {
                        myConnection.Open();

                        String storedProcedureName = "[BaoCaoTongHop]";

                        SqlCommand commandObj = new SqlCommand(storedProcedureName, myConnection);
                        commandObj.CommandType = CommandType.StoredProcedure;

                        // Từ ngày
                        commandObj.Parameters.Add("@tungay", SqlDbType.DateTime).Value = dateTuNgay.DateTime;

                        // Đến ngày 
                        commandObj.Parameters.Add("@denngay", SqlDbType.DateTime).Value = dateDenNgay.DateTime;

                        SqlDataAdapter da = new SqlDataAdapter(commandObj);

                        dataTableObj.Clear();

                        da.Fill(dataTableObj);

                        INHOADON_TAMVAN.CrystalReports.BaoCaoTongHopHoaDonTheoNgay rptBaoCaoTongHopHoaDonTheoNgayObj = new INHOADON_TAMVAN.CrystalReports.BaoCaoTongHopHoaDonTheoNgay();

                        rptBaoCaoTongHopHoaDonTheoNgayObj.SetDataSource(dataTableObj);

                        // Tên doanh nghiệp
                        rptBaoCaoTongHopHoaDonTheoNgayObj.SetParameterValue("paraTenDoanhNghiep", "CÔNG TY TNHH THƯƠNG MẠI DỊCH VỤ TÂM VÂN PETRO");

                        // Địa chỉ doanh nghiệp
                        rptBaoCaoTongHopHoaDonTheoNgayObj.SetParameterValue("paraDiaChiDoanhNghiep", 
                            "Số 226C/5, KV 5, Phường An Bình, Q Ninh Kiều, Tp Cần Thơ");

                        // Điện thoại
                        rptBaoCaoTongHopHoaDonTheoNgayObj.SetParameterValue("paraDienThoaiDoanhNghiep", 
                            "ĐT: (0710) 3 911 180 - 0902 390992");

                        // Thời gian
                        rptBaoCaoTongHopHoaDonTheoNgayObj.SetParameterValue("paraTuNgayDenNgay", "Từ " + dateTuNgay.DateTime.Day.ToString() + "/" +
                            tuThang.ToString() + "/" + tuNam.ToString() + " đến " + dateDenNgay.DateTime.Day.ToString() + "/" +
                            denThang.ToString() + "/" + denNam.ToString());

                        // Địa danh
                        rptBaoCaoTongHopHoaDonTheoNgayObj.SetParameterValue("txtDiaDanh",
                            "Cần Thơ");

                        crystalReportViewer1.ReportSource = rptBaoCaoTongHopHoaDonTheoNgayObj;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                    }
                    finally
                    {
                        myConnection.Close();
                        Cursor.Current = Cursors.Default;
                    }
                }

                else if (dateTuNgay.EditValue == null)
                {
                    dxErrorProvider1.SetError(dateTuNgay, "Vui lòng chọn mốc thời gian từ ngày!");
                }

                else if (dateDenNgay.EditValue == null)
                {
                    dxErrorProvider1.SetError(dateDenNgay, "Vui lòng chọn mốc thời gian đến ngày!");
                }

         
            

        }
        private void hienThiBaoCaoTongHopHoaDonTheoNgayTheoLoai()
        {
            Cursor.Current = Cursors.WaitCursor;

            if (dateTuNgay.EditValue != null && dateDenNgay.EditValue != null)
            {
                dxErrorProvider1.ClearErrors();

                dxErrorProvider2.ClearErrors();

                // Từ tháng 
                tuThang = Convert.ToInt32(dateTuNgay.DateTime.Month);

                // Đến tháng
                denThang = Convert.ToInt32(dateDenNgay.DateTime.Month);

                // Từ năm
                tuNam = Convert.ToInt32(dateTuNgay.DateTime.Year);

                // Đến năm
                denNam = Convert.ToInt32(dateDenNgay.DateTime.Year);

                DateTime dt = DateTime.Now;

                canThoNgayThangNam = "Cần Thơ, ngày " + dt.Day + " tháng " + dt.Month + " năm " + dt.Year;

                // Connection
                SqlConnection myConnection = new SqlConnection(SystemInfo.pub_ConnString);

                try
                {
                    myConnection.Open();

                    String storedProcedureName = "[BaoCaoTongHop]";

                    SqlCommand commandObj = new SqlCommand(storedProcedureName, myConnection);
                    commandObj.CommandType = CommandType.StoredProcedure;

                    // Từ ngày
                    commandObj.Parameters.Add("@tungay", SqlDbType.DateTime).Value = dateTuNgay.DateTime;

                    // Đến ngày 
                    commandObj.Parameters.Add("@denngay", SqlDbType.DateTime).Value = dateDenNgay.DateTime;

                    //Ký hiệu
                    //commandObj.Parameters.Add("@kyhieuhoadon", SqlDbType.NVarChar).Value = comboBoxEditLoaiHoaDon.Text;

                    SqlDataAdapter da = new SqlDataAdapter(commandObj);

                    dataTableObj.Clear();

                    da.Fill(dataTableObj);

                    INHOADON_TAMVAN.CrystalReports.BaoCaoTongHopHoaDonTheoNgayTheoLoai rptBaoCaoTongHopHoaDonTheoNgayObj = new INHOADON_TAMVAN.CrystalReports.BaoCaoTongHopHoaDonTheoNgayTheoLoai();

                    rptBaoCaoTongHopHoaDonTheoNgayObj.SetDataSource(dataTableObj);

                    // Tên doanh nghiệp
                    rptBaoCaoTongHopHoaDonTheoNgayObj.SetParameterValue("paraTenDoanhNghiep", "TT Công nghệ Phần mềm Cần Thơ");

                    // Địa chỉ doanh nghiệp
                    rptBaoCaoTongHopHoaDonTheoNgayObj.SetParameterValue("paraDiaChiDoanhNghiep",
                        "ĐC: 29 CMT8, P. Thới Bình, Q. Ninh Kiều, TPCT");

                    // Điện thoại
                    rptBaoCaoTongHopHoaDonTheoNgayObj.SetParameterValue("paraDienThoaiDoanhNghiep",
                        "ĐT: (0710) 3 762 777 - Fax: (0710) 3 761 937");

                    // Thời gian
                    rptBaoCaoTongHopHoaDonTheoNgayObj.SetParameterValue("paraTuNgayDenNgay", "Từ " + dateTuNgay.DateTime.Day.ToString() + "/" +
                        tuThang.ToString() + "/" + tuNam.ToString() + " đến " + dateDenNgay.DateTime.Day.ToString() + "/" +
                        denThang.ToString() + "/" + denNam.ToString());

                    // Ký hiệu hóa đơn
                   // rptBaoCaoTongHopHoaDonTheoNgayObj.SetParameterValue("paraKyHieu", comboBoxEditLoaiHoaDon.Text);   

                    // Địa danh
                    rptBaoCaoTongHopHoaDonTheoNgayObj.SetParameterValue("txtDiaDanh",
                        "Cần Thơ");

                    crystalReportViewer1.ReportSource = rptBaoCaoTongHopHoaDonTheoNgayObj;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
                finally
                {
                    myConnection.Close();
                    Cursor.Current = Cursors.Default;
                }
            }

            else if (dateTuNgay.EditValue == null)
            {
                dxErrorProvider1.SetError(dateTuNgay, "Vui lòng chọn mốc thời gian từ ngày!");
            }

            else if (dateDenNgay.EditValue == null)
            {
                dxErrorProvider1.SetError(dateDenNgay, "Vui lòng chọn mốc thời gian đến ngày!");
            }




        }

        private void btnXuatExcel_Click(object sender, EventArgs e)
        {
            SaveFileDialog dlg = new SaveFileDialog();
            dlg.Filter = "(*.xls)|*.xls";
            dlg.ShowDialog();
            if (dlg.FileName.ToString().Trim() != "")
            {
                string path = dlg.FileName;
                try
                {
                    //gvKetQua.ExportToXls(path);
                    gcXuatExcel.DataSource = dataTableObj;

                    gvXuatExcel.BestFitColumns();

               

                    gvXuatExcel.ExportToXls(path);
                    //XlsExportOptions option = new XlsExportOptions();
                    ////option.

                    //gvXuatExcel.ExportToXls(path,
                    XtraMessageBox.Show("Đã xuất file thành công.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch
                {
                    XtraMessageBox.Show("File đang được sử dụng", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {
            //if (comboBoxEditLoaiHoaDon.EditValue == null || comboBoxEditLoaiHoaDon.EditValue.ToString() == "Tất cả" )
            //{
              hienThiBaoCaoTongHopHoaDonTheoNgay();
            //}
            //else
            //    hienThiBaoCaoTongHopHoaDonTheoNgayTheoLoai();
        }

       

        private void hideContainerLeft_Click(object sender, EventArgs e)
        {

        }

        private void dateTuNgay_EditValueChanged(object sender, EventArgs e)
        {

        }

        private void comboBoxEditLoaiHoaDon_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void comboBoxEditLoaiHoaDon_SelectedValueChanged(object sender, EventArgs e)
        {
            
        }


    }
}